#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "rdbmsMIB_access.h"
#include "rdbmsMIB_enums.h"
#include "rdbmsMIB_columns.h"
#include "snmprdbms_config.h"
#include "snmprdbms_data.h"
#include "snmprdbms_odbc.h"
#include "snmprdbms.h"

/** returns the first data point within the rdbmsDbTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsDbTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;
  return rdbmsDbTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata); 
}

/** functionally the same as rdbmsDbTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsDbTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;
    rdbmsdata *data;

    if(*my_loop_context == NULL) {
      data = data_get();
      if (data == NULL)
    	  return NULL;
      *my_loop_context = data->rdbmsDbTable;
    }
    else
      *my_loop_context = ((odbcdatatable *)*my_loop_context)->next_row;

    if (*my_loop_context == NULL)
    	return NULL;

    vptr = put_index_data;
    *my_data_context = *my_loop_context;

    snmp_set_var_typed_value(vptr, ASN_INTEGER, (const u_char *) ((odbcdatatable*)*my_data_context)->fields[0].data, sizeof(unsigned int));
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsDbTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsDbPrivateMibOID column and set
         ret_len to its proper size in bytes. */
      oid *get_rdbmsDbPrivateMibOID(void *data_context, size_t *ret_len) {
        *ret_len = MAX_ODBC_BUFFER_LENGTH;
        return (oid *) odbc_get_named_field("rdbmsDbPrivateMibOID", (odbcdatatable *)data_context);
      }
/** XXX: return a data pointer to the data for the rdbmsDbVendorName column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbVendorName(void *data_context, size_t *ret_len) {
    	*ret_len = MAX_ODBC_BUFFER_LENGTH;
        return odbc_get_named_field("rdbmsDbVendorName", (odbcdatatable *)data_context);
      }
/** XXX: return a data pointer to the data for the rdbmsDbName column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbName(void *data_context, size_t *ret_len) {
    	*ret_len = MAX_ODBC_BUFFER_LENGTH;
        return odbc_get_named_field("rdbmsDbName", (odbcdatatable *)data_context);
      }
/** XXX: return a data pointer to the data for the rdbmsDbContact column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbContact(void *data_context, size_t *ret_len) {
    	*ret_len = MAX_ODBC_BUFFER_LENGTH;
        return odbc_get_named_field("rdbmsDbContact", (odbcdatatable *)data_context);
      }

/** returns the first data point within the rdbmsDbInfoTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsDbInfoTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
    return NULL;                                                                          
  return rdbmsDbInfoTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata); 
}

/** functionally the same as rdbmsDbInfoTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsDbInfoTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = NULL/** XXX */;
    *my_data_context = NULL/** XXX */;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsDbIndex data */, 0/** XXX: length of rdbmsDbIndex data */);
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsDbInfoTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsDbInfoProductName column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbInfoProductName(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbInfoVersion column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbInfoVersion(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbInfoSizeUnits column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsDbInfoSizeUnits(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbInfoSizeAllocated column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsDbInfoSizeAllocated(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsDbInfoSizeAllocated column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsDbInfoSizeAllocated(void *data_context, long *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
/** XXX: return a data pointer to the data for the rdbmsDbInfoSizeUsed column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsDbInfoSizeUsed(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbInfoLastBackup column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbInfoLastBackup(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
    

/** returns the first data point within the rdbmsDbParamTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsDbParamTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
        return NULL;                                                                          
  return rdbmsDbParamTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata);
}

/** functionally the same as rdbmsDbParamTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsDbParamTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = NULL/** XXX */;
    *my_data_context = NULL/** XXX */;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsDbIndex data */, 0/** XXX: length of rdbmsDbIndex data */);
    vptr = vptr->next_variable;
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsDbParamName data */, 0/** XXX: length of rdbmsDbParamName data */);
    vptr = vptr->next_variable;
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsDbParamSubIndex data */, 0/** XXX: length of rdbmsDbParamSubIndex data */);
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsDbParamTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsDbParamID column and set
         ret_len to its proper size in bytes. */
      oid *get_rdbmsDbParamID(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbParamCurrValue column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbParamCurrValue(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsDbParamCurrValue column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsDbParamCurrValue(void *data_context, char *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
/** XXX: return a data pointer to the data for the rdbmsDbParamComment column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbParamComment(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsDbParamComment column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsDbParamComment(void *data_context, char *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
    

/** returns the first data point within the rdbmsDbLimitedResourceTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsDbLimitedResourceTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
        return NULL;                                                                          
  return rdbmsDbLimitedResourceTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata);
}

/** functionally the same as rdbmsDbLimitedResourceTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsDbLimitedResourceTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = NULL/** XXX */;
    *my_data_context = NULL/** XXX */;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsDbIndex data */, 0/** XXX: length of rdbmsDbIndex data */);
    vptr = vptr->next_variable;
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsDbLimitedResourceName data */, 0/** XXX: length of rdbmsDbLimitedResourceName data */);
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsDbLimitedResourceTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsDbLimitedResourceID column and set
         ret_len to its proper size in bytes. */
      oid *get_rdbmsDbLimitedResourceID(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbLimitedResourceLimit column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsDbLimitedResourceLimit(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsDbLimitedResourceLimit column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsDbLimitedResourceLimit(void *data_context, long *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
/** XXX: return a data pointer to the data for the rdbmsDbLimitedResourceCurrent column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsDbLimitedResourceCurrent(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbLimitedResourceHighwater column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsDbLimitedResourceHighwater(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbLimitedResourceFailures column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsDbLimitedResourceFailures(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsDbLimitedResourceDescription column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsDbLimitedResourceDescription(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsDbLimitedResourceDescription column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsDbLimitedResourceDescription(void *data_context, char *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
    
/** returns the first data point within the rdbmsSrvTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsSrvTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
        return NULL;                                                                          
  return rdbmsSrvTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata);
}

/** functionally the same as rdbmsSrvTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsSrvTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = ( (conf_instance_param*) my_loop_context )->next;
    *my_data_context = my_loop_context;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: applIndex data */, 0/** XXX: length of applIndex data */);
    vptr = vptr->next_variable;

    return put_index_data;
}


/* User-defined data access functions (per column) for data in table rdbmsSrvTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsSrvPrivateMibOID column and set
         ret_len to its proper size in bytes. */
      oid *get_rdbmsSrvPrivateMibOID(void *data_context, size_t *ret_len) {
        return NULL;
      }
/** XXX: return a data pointer to the data for the rdbmsSrvVendorName column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsSrvVendorName(void *data_context, size_t *ret_len) {
        return NULL;
      }
/** XXX: return a data pointer to the data for the rdbmsSrvProductName column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsSrvProductName(void *data_context, size_t *ret_len) {
        return NULL;
      }
/** XXX: return a data pointer to the data for the rdbmsSrvContact column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsSrvContact(void *data_context, size_t *ret_len) {
        return NULL;
      }

/** returns the first data point within the rdbmsSrvInfoTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsSrvInfoTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
        return NULL;                                                                          
  return rdbmsSrvInfoTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata);
}

/** functionally the same as rdbmsSrvInfoTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsSrvInfoTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = NULL/** XXX */;
    *my_data_context = NULL/** XXX */;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: applIndex data */, 0/** XXX: length of applIndex data */);
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsSrvInfoTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsSrvInfoStartupTime column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsSrvInfoStartupTime(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoFinishedTransactions column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoFinishedTransactions(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoDiskReads column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoDiskReads(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoLogicalReads column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoLogicalReads(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoDiskWrites column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoDiskWrites(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoLogicalWrites column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoLogicalWrites(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoPageReads column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoPageReads(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoPageWrites column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoPageWrites(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoDiskOutOfSpaces column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoDiskOutOfSpaces(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoHandledRequests column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoHandledRequests(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoRequestRecvs column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoRequestRecvs(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoRequestSends column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoRequestSends(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoHighwaterInboundAssociations column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoHighwaterInboundAssociations(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvInfoMaxInboundAssociations column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvInfoMaxInboundAssociations(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsSrvInfoMaxInboundAssociations column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsSrvInfoMaxInboundAssociations(void *data_context, u_long *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
    

/** returns the first data point within the rdbmsSrvParamTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsSrvParamTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
        return NULL;                                                                          
  return rdbmsSrvParamTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata);
}

/** functionally the same as rdbmsSrvParamTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsSrvParamTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = NULL/** XXX */;
    *my_data_context = NULL/** XXX */;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: applIndex data */, 0/** XXX: length of applIndex data */);
    vptr = vptr->next_variable;
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsSrvParamName data */, 0/** XXX: length of rdbmsSrvParamName data */);
    vptr = vptr->next_variable;
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsSrvParamSubIndex data */, 0/** XXX: length of rdbmsSrvParamSubIndex data */);
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsSrvParamTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsSrvParamID column and set
         ret_len to its proper size in bytes. */
      oid *get_rdbmsSrvParamID(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvParamCurrValue column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsSrvParamCurrValue(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsSrvParamCurrValue column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsSrvParamCurrValue(void *data_context, char *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvParamComment column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsSrvParamComment(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsSrvParamComment column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsSrvParamComment(void *data_context, char *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
    

/** returns the first data point within the rdbmsSrvLimitedResourceTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsSrvLimitedResourceTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
        return NULL;                                                                          
  return rdbmsSrvLimitedResourceTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata);
}

/** functionally the same as rdbmsSrvLimitedResourceTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsSrvLimitedResourceTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = NULL/** XXX */;
    *my_data_context = NULL/** XXX */;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: applIndex data */, 0/** XXX: length of applIndex data */);
    vptr = vptr->next_variable;
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsSrvLimitedResourceName data */, 0/** XXX: length of rdbmsSrvLimitedResourceName data */);
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsSrvLimitedResourceTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsSrvLimitedResourceID column and set
         ret_len to its proper size in bytes. */
      oid *get_rdbmsSrvLimitedResourceID(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvLimitedResourceLimit column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsSrvLimitedResourceLimit(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsSrvLimitedResourceLimit column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsSrvLimitedResourceLimit(void *data_context, long *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvLimitedResourceCurrent column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsSrvLimitedResourceCurrent(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvLimitedResourceHighwater column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsSrvLimitedResourceHighwater(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvLimitedResourceFailures column and set
         ret_len to its proper size in bytes. */
      u_long *get_rdbmsSrvLimitedResourceFailures(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsSrvLimitedResourceDescription column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsSrvLimitedResourceDescription(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: Set the value of the rdbmsSrvLimitedResourceDescription column and return
         SNMP_ERR_NOERROR on success
         SNMP_ERR_XXX     for SNMP deterministic error codes
         SNMP_ERR_GENERR  on generic failures (a last result response). */
      int set_rdbmsSrvLimitedResourceDescription(void *data_context, char *val, size_t val_len) {
        return SNMP_ERR_NOERROR;  /** XXX: change if an error occurs */
      }
    

/** returns the first data point within the rdbmsRelTable table data.

    Set the my_loop_context variable to the first data point structure
    of your choice (from which you can find the next one).  This could
    be anything from the first node in a linked list, to an integer
    pointer containing the beginning of an array variable.

    Set the my_data_context variable to something to be returned to
    you later that will provide you with the data to return in a given
    row.  This could be the same pointer as what my_loop_context is
    set to, or something different.

    The put_index_data variable contains a list of snmp variable
    bindings, one for each index in your table.  Set the values of
    each appropriately according to the data matching the first row
    and return the put_index_data variable at the end of the function.
*/
netsnmp_variable_list *
rdbmsRelTable_get_first_data_point(void **my_loop_context, void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
  *my_loop_context = NULL;                                                                
  if(data_get() == NULL)                                                                  
        return NULL;                                                                          
  return rdbmsRelTable_get_next_data_point(my_loop_context, my_data_context, put_index_data, mydata);
}

/** functionally the same as rdbmsRelTable_get_first_data_point, but
   my_loop_context has already been set to a previous value and should
   be updated to the next in the list.  For example, if it was a
   linked list, you might want to cast it to your local data type and
   then return my_loop_context->next.  The my_data_context pointer
   should be set to something you need later and the indexes in
   put_index_data updated again. */
netsnmp_variable_list *
rdbmsRelTable_get_next_data_point(void **my_loop_context, void **my_data_context,
                         netsnmp_variable_list *put_index_data,
                         netsnmp_iterator_info *mydata)
{

    netsnmp_variable_list *vptr;

    *my_loop_context = NULL/** XXX */;
    *my_data_context = NULL/** XXX */;

    vptr = put_index_data;
    
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: rdbmsDbIndex data */, 0/** XXX: length of rdbmsDbIndex data */);
    vptr = vptr->next_variable;
    snmp_set_var_value(vptr, (u_char *) NULL/** XXX: applIndex data */, 0/** XXX: length of applIndex data */);
    vptr = vptr->next_variable;

    return put_index_data;
}

/* User-defined data access functions (per column) for data in table rdbmsRelTable */
/*
 * NOTE:
 * - these get_ routines MUST return data that will not be freed (ie,
 *   use static variables or persistent data).  It will be copied, if
 *   needed, immediately after the get_ routine has been called.
 * - these SET routines must copy the incoming data and can not take
 *   ownership of the memory passed in by the val pointer.
 */
/** XXX: return a data pointer to the data for the rdbmsRelState column and set
         ret_len to its proper size in bytes. */
      long *get_rdbmsRelState(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
/** XXX: return a data pointer to the data for the rdbmsRelActiveTime column and set
         ret_len to its proper size in bytes. */
      char *get_rdbmsRelActiveTime(void *data_context, size_t *ret_len) {
      return NULL; /** XXX: replace this with a pointer to a real value */
      }
 
